'use strict';

const { BrowserWindow } = require('electron');
const { windowService } = require('../../service/os/window');

/**
 * 聊天窗口控制器
 * @class
 */
class ChatController {

    /**
     * 广播消息到所有窗口
     */
    async broadcastMessage(args) {
        console.log('收到广播消息请求:', args);
        const { event, data } = args;
        const allWindows = BrowserWindow.getAllWindows();
        
        console.log(`广播消息到 ${allWindows.length} 个窗口`);
        
        try {
            allWindows.forEach(window => {
                if (window.id !== event.sender.id) {
                    console.log(`发送消息到窗口 ID: ${window.id}`);
                    window.webContents.send('broadcast-message', data);
                }
            });
            return { success: true, message: '消息广播成功' };
        } catch (error) {
            console.error('广播消息失败:', error);
            return { success: false, error: error.message };
        }
    }
    
    /**
     * 使用框架标准方式在窗口间通信
     */
    async communicateWindows(args) {
        console.log('窗口间通信:', args);
        try {
            // 使用框架提供的窗口服务进行通信
            windowService.communicate(args);
            return { success: true, message: '消息发送成功' };
        } catch (error) {
            console.error('窗口通信失败:', error);
            return { success: false, error: error.message };
        }
    }
    
    /**
     * 打开聊天窗口
     */
    async openChatWindow(args) {
        console.log('打开聊天窗口:', args);
        try {
            const { title, width = 740, height = 975, index, params } = args;
            
            // 构建符合框架要求的窗口参数
            const windowOptions = {
                type: 'vue', // 使用vue类型，这样会使用框架的路由处理
                windowName: `chat-window-${index}`,
                windowTitle: title || '聊天窗口',
                content: '#/test', // 路由路径
                data: params // 这个参数可能不会被框架使用
            };
            
            console.log('窗口创建参数:', windowOptions);
            
            // 使用框架的窗口服务创建窗口
            const winContentsId = windowService.createWindow(windowOptions);
            console.log('窗口创建成功，ID:', winContentsId);
            
            return { success: true, windowId: winContentsId };
        } catch (error) {
            console.error('创建聊天窗口失败:', error);
            return { success: false, error: error.message };
        }
    }
}

module.exports = ChatController; 